#Requires AutoHotkey v2.0

; ========================================
; 配置区域 - 可根据需要修改
; ========================================
; 项目根目录
PROJECT_DIR := "src\myxhs"
; 要执行的Python脚本
PYTHON_SCRIPT := "myxhs2.py"
; 日志文件路径
LOG_FILE := PROJECT_DIR . "\scheduler_log.txt"
; 执行时间（24小时制）
EXECUTION_TIMES := ["06:00", "20:00"]
; 环境变量文件路径
ENV_FILE := PROJECT_DIR . "\.env"

; ========================================
; 主程序
; ========================================
#SingleInstance Force

; 创建日志目录（如果不存在）
SplitPath(LOG_FILE, &filename, &dir)
if !DirExist(dir)
    DirCreate(dir)

; 记录启动日志
LogMessage("定时任务调度器已启动")

; 设置定时器，每分钟检查一次
SetTimer(CheckAndExecute, 60000)  ; 60000ms = 1分钟

; 立即执行一次检查
CheckAndExecute()

; 保持脚本运行
return

; ========================================
; 检查并执行函数
; ========================================
CheckAndExecute() {
    global EXECUTION_TIMES, PROJECT_DIR, PYTHON_SCRIPT, LOG_FILE
    
    ; 获取当前时间
    currentTime := FormatTime(, "HH:mm")
    
    ; 检查是否到达执行时间
    for executionTime in EXECUTION_TIMES {
        if (currentTime = executionTime) {
            LogMessage("开始执行任务: " . PYTHON_SCRIPT)
            ExecutePythonScript()
            return
        }
    }
}

; ========================================
; 执行Python脚本
; ========================================
ExecutePythonScript() {
    global PROJECT_DIR, PYTHON_SCRIPT, LOG_FILE
    
    try {
        ; 打开新的控制台窗口并执行命令
        LogMessage("打开控制台窗口执行任务")
        
        ; 构建完整命令：cd到目录 && 执行pdm run
        command := "cd /d " . PROJECT_DIR . " && pdm run python " . PYTHON_SCRIPT
        
        ; 打开新的cmd窗口并执行命令
        Run("cmd /k " . command, , "Max")
        
        ; 记录执行开始
        LogMessage("任务已在控制台窗口中启动")
        
    } catch Error as e {
        LogMessage("执行过程中发生异常: " . e.Message)
    }
}

; ========================================
; 日志记录函数
; ========================================
LogMessage(message) {
    global LOG_FILE
    
    ; 获取当前时间戳
    timestamp := FormatTime(, "yyyy-MM-dd HH:mm:ss")
    
    ; 构建日志消息
    logMessage := "[" . timestamp . "] " . message . "`n"
    
    ; 写入日志文件
    try {
        FileAppend(logMessage, LOG_FILE, "UTF-8")
    } catch Error as e {
        ; 如果写入失败，尝试显示消息框
        MsgBox("无法写入日志文件: " . e.Message)
    }
}

; ========================================
; 热键控制
; ========================================
; Ctrl+Alt+S: 手动执行任务
^!s:: {
    LogMessage("手动触发任务执行")
    ExecutePythonScript()
}

; Ctrl+Alt+X: 退出脚本
^!x:: {
    LogMessage("定时任务调度器已停止")
    ExitApp()
}

; Ctrl+Alt+L: 打开日志文件
^!l:: {
    try {
        Run(LOG_FILE)
    } catch Error as e {
        MsgBox("无法打开日志文件: " . e.Message)
    }
}

 